const http = require('../../../utils/https.js')

Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 页面模式：add-添加，edit-编辑
    mode: 'add',
    vehicleId: '',
    residentId: '',
    
    // 车辆信息
    brands: ['丰田', '本田', '奔驰', '宝马', '奥迪', '其他'],
    selectedBrand: '',
    plateNumber: '',
    model: '',
    color: '',
    imageUrl: '',
    
    // 住户信息
    residentName: '',
    residentPhone: '',
    
    // 加载状态
    loading: false,
    residentLoading: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log('=== 车辆页面加载开始 ===');
    console.log('页面参数:', options);
    console.log('本地存储的住户ID:', wx.getStorageSync('residentId'));
    
    // 获取住户ID（优先从参数获取，否则从本地存储获取）
    let residentId = options.residentId || wx.getStorageSync('residentId');
    
    console.log('最终使用的住户ID:', residentId);
    
    if (!residentId) {
      console.error('未找到住户ID');
      wx.showToast({
        title: '用户信息不存在，请重新登录',
        icon: 'none'
      });
      return;
    }
    
    // 设置住户ID
    this.setData({
      residentId: residentId
    });
    
    console.log('住户ID已设置到data中:', this.data.residentId);
    
    // 获取住户信息
    console.log('开始调用获取住户信息方法...');
    this.getResidentInfo(residentId);
    
    if (options.mode === 'edit' && options.id) {
      // 编辑模式
      console.log('检测到编辑模式，车辆ID:', options.id);
      this.setData({
        mode: 'edit',
        vehicleId: options.id
      });
      
      // 获取车辆信息
      console.log('开始获取车辆信息...');
      this.getVehicleInfo(options.id);
    } else {
      console.log('添加模式，无需获取车辆信息');
    }
    
    console.log('=== 页面加载完成 ===');
  },

  // 获取车辆信息
  getVehicleInfo(vehicleId) {
    console.log('获取车辆信息，ID:', vehicleId);
    
    this.setData({ loading: true });
    
    // 调用车辆详情接口
    http.get('vehicle/vehicle/list', { residentId: wx.getStorageSync('residentId') })
      .then(res => {
        if (res.code === 200 && res.rows) {
          const vehicle = res.rows.find(v => v.id == vehicleId);
          if (vehicle) {
            console.log('获取到车辆信息:', vehicle);
            
            // 填充表单数据
            this.setData({
              plateNumber: vehicle.plateNumber || '',
              selectedBrand: vehicle.brand || '',
              model: vehicle.model || '',
              color: vehicle.color || '',
              imageUrl: vehicle.imageUrl || '',
              loading: false
            });
          } else {
            wx.showToast({
              title: '未找到车辆信息',
              icon: 'none'
            });
          }
        }
      })
      .catch(err => {
        console.error('获取车辆信息失败:', err);
        this.setData({ loading: false });
        wx.showToast({
          title: '获取车辆信息失败',
          icon: 'none'
        });
      });
  },

  // 获取住户信息
  getResidentInfo(residentId) {
    console.log('=== 开始获取住户信息 ===');
    console.log('住户ID:', residentId);
    console.log('接口地址:', `resident/resident/${residentId}`);
    
    this.setData({ residentLoading: true });
    
    http.get(`resident/resident/${residentId}`)
      .then(res => {
        console.log('=== 住户信息接口返回 ===');
        console.log('完整响应:', res);
        console.log('响应码:', res.code);
        console.log('响应数据:', res.data);
        
        if (res.code === 200 && res.data) {
          const resident = res.data;
          console.log('获取到住户信息:', resident);
          console.log('住户姓名字段:', resident.name, resident.residentName);
          console.log('住户电话字段:', resident.phoneNumber, resident.phone_number, resident.phone, resident.residentPhone);
          
          // 详细检查所有可能的电话字段
          console.log('=== 详细检查电话字段 ===');
          console.log('resident.phone_number:', resident.phone_number);
          console.log('resident.phone:', resident.phone);
          console.log('resident.residentPhone:', resident.residentPhone);
          console.log('所有字段名:', Object.keys(resident));
          
          // 检查是否有其他可能的电话字段
          const phoneFields = Object.keys(resident).filter(key => 
            key.toLowerCase().includes('phone') || 
            key.toLowerCase().includes('tel') || 
            key.toLowerCase().includes('mobile')
          );
          console.log('可能的电话相关字段:', phoneFields);
          
          const residentName = resident.name || resident.residentName || '未知';
          const residentPhone = resident.phoneNumber || resident.phone_number || resident.phone || resident.residentPhone || '未知';
          
          console.log('最终设置的姓名:', residentName);
          console.log('最终设置的电话:', residentPhone);
          
          this.setData({
            residentName: residentName,
            residentPhone: residentPhone,
            residentLoading: false
          });
          
          console.log('住户信息设置完成，当前data:', this.data);
        } else {
          console.log('获取住户信息失败，响应码:', res.code);
          console.log('响应消息:', res.msg || res.message);
          this.setData({ residentLoading: false });
          
          wx.showToast({
            title: '获取住户信息失败',
            icon: 'none'
          });
        }
      })
      .catch(err => {
        console.error('=== 获取住户信息异常 ===');
        console.error('错误详情:', err);
        this.setData({ residentLoading: false });
        
        wx.showToast({
          title: '获取住户信息失败',
          icon: 'none'
        });
      });
  },

  // 品牌选择
  onBrandChange(e) {
    const index = e.detail.value;
    this.setData({
      selectedBrand: this.data.brands[index]
    });
  },

  // 车牌号输入
  onPlateNumberInput(e) {
    this.setData({
      plateNumber: e.detail.value
    });
  },

  // 型号输入
  onModelInput(e) {
    this.setData({
      model: e.detail.value
    });
  },

  // 颜色输入
  onColorInput(e) {
    this.setData({
      color: e.detail.value
    });
  },

  // 上传图片
  uploadImage() {
    console.log('=== 开始上传图片 ===');
    
    // 简单的图片选择测试
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        console.log('图片选择成功:', res);
        if (res.tempFilePaths && res.tempFilePaths.length > 0) {
          this.setData({
            imageUrl: res.tempFilePaths[0]
          });
          wx.showToast({
            title: '图片选择成功',
            icon: 'success'
          });
        }
      },
      fail: (err) => {
        console.error('图片选择失败:', err);
        wx.showToast({
          title: '选择图片失败',
          icon: 'none'
        });
      }
    });
  },







  // 保存车辆信息
  saveVehicle() {
    // 表单验证
    if (!this.data.plateNumber.trim()) {
      wx.showToast({
        title: '请输入车牌号',
        icon: 'none'
      });
      return;
    }
    
    if (!this.data.selectedBrand) {
      wx.showToast({
        title: '请选择车辆品牌',
        icon: 'none'
      });
      return;
    }
    
    if (!this.data.model.trim()) {
      wx.showToast({
        title: '请输入车辆型号',
        icon: 'none'
      });
      return;
    }
    
    if (!this.data.color.trim()) {
      wx.showToast({
        title: '请输入车身颜色',
        icon: 'none'
      });
      return;
    }
    
    // 准备提交数据
    const vehicleData = {
      plateNumber: this.data.plateNumber.trim(),
      brand: this.data.selectedBrand,
      model: this.data.model.trim(),
      color: this.data.color.trim(),
      imageUrl: this.data.imageUrl,
      residentId: this.data.residentId
    };
    
    console.log('准备提交的车辆数据:', vehicleData);
    
    if (this.data.mode === 'edit') {
      // 编辑模式：调用修改接口
      this.updateVehicle(vehicleData);
    } else {
      // 添加模式：调用添加接口
      this.addVehicle(vehicleData);
    }
  },

  // 修改车辆信息
  updateVehicle(vehicleData) {
    console.log('修改车辆信息:', vehicleData);
    
    this.setData({ loading: true });
    
    // 添加车辆ID到请求数据
    const updateData = {
      ...vehicleData,
      id: this.data.vehicleId
    };
    
    // 使用PUT方法修改车辆信息
    http.put('vehicle/vehicle', updateData)
      .then(res => {
        console.log('车辆修改接口返回:', res);
        
        if (res.code === 200) {
          wx.showToast({
            title: '修改成功',
            icon: 'success'
          });
          
          // 延迟返回上一页
          setTimeout(() => {
            wx.navigateBack();
          }, 1500);
        } else {
          wx.showToast({
            title: res.message || '修改失败',
            icon: 'none'
          });
        }
      })
      .catch(err => {
        console.error('车辆修改失败:', err);
        wx.showToast({
          title: '修改失败，请重试',
          icon: 'none'
        });
      })
      .finally(() => {
        this.setData({ loading: false });
      });
  },

  // 添加车辆信息
  addVehicle(vehicleData) {
    console.log('添加车辆信息:', vehicleData);
    
    this.setData({ loading: true });
    
    // 添加默认状态：审核中
    const submitData = {
      ...vehicleData,
      vehicleStatus: 1
    };
    
    console.log('提交的完整车辆数据:', submitData);
    
    // 使用POST方法添加车辆
    http.post('vehicle/vehicle', submitData)
      .then(res => {
        console.log('车辆添加接口返回:', res);
        
        if (res.code === 200) {
          wx.showToast({
            title: '添加成功',
            icon: 'success'
          });
          
          // 延迟返回上一页
          setTimeout(() => {
            wx.navigateBack();
          }, 1500);
        } else {
          wx.showToast({
            title: res.message || '添加失败',
            icon: 'none'
          });
        }
      })
      .catch(err => {
        console.error('车辆添加失败:', err);
        wx.showToast({
          title: '添加失败，请重试',
          icon: 'none'
        });
      })
      .finally(() => {
        this.setData({ loading: false });
      });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '车辆信息添加页面',
      path: '/mine/pages/add-car/add-car'
    };
  }
});